home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / MTMDI.PAK / MAINFRM.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  2KB  |  89 lines

  1. // mainfrm.cpp : implementation of the CMainFrame class
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "stdafx.h"
  14. #include "bounce.h"
  15. #include "hello.h"
  16. #include "mdi.h"
  17.  
  18. #include "mainfrm.h"
  19. #include "mtbounce.h"
  20.  
  21. #ifdef _DEBUG
  22. #undef THIS_FILE
  23. static char BASED_CODE THIS_FILE[] = __FILE__;
  24. #endif
  25.  
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CMainFrame
  28.  
  29. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  30.  
  31. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  32.     //{{AFX_MSG_MAP(CMainFrame)
  33.     ON_COMMAND(IDM_BOUNCE, OnBounce)
  34.     ON_COMMAND(IDM_HELLO, OnHello)
  35.     //}}AFX_MSG_MAP
  36. END_MESSAGE_MAP()
  37.  
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CMainFrame construction/destruction
  40.  
  41. CMainFrame::CMainFrame()
  42. {
  43. }
  44.  
  45. CMainFrame::~CMainFrame()
  46. {
  47. }
  48.  
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CMainFrame commands
  51.  
  52. void CMainFrame::OnBounce()
  53. {
  54.     CBounceMDIChildWnd *pBounceMDIChildWnd = new CBounceMDIChildWnd;
  55.     if (!pBounceMDIChildWnd->Create( _T("Bounce"),
  56.         WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, rectDefault, this))
  57.         return;
  58. }
  59.  
  60. void CMainFrame::OnHello()
  61. {
  62.     CHelloWnd *pHelloWnd = new CHelloWnd;
  63.     if (!pHelloWnd->Create(_T("Hello"),
  64.         WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,
  65.         rectDefault, this))
  66.         return;
  67.  
  68.     // the default PostNcDestroy handler will delete this object when destroyed
  69. }
  70.  
  71. static BOOL CALLBACK SendPrepareToClose(HWND hWnd, LPARAM)
  72. {
  73.     CWnd* pWnd = CWnd::FromHandlePermanent(hWnd);
  74.     if (pWnd != NULL)
  75.     {
  76.         pWnd->SendMessage(WM_USER_PREPARE_TO_CLOSE);
  77.         if (pWnd->GetWindow(GW_CHILD) != NULL)
  78.             ::EnumChildWindows(pWnd->m_hWnd, SendPrepareToClose, 0);
  79.     }
  80.     return TRUE;
  81. }
  82.  
  83. BOOL CMainFrame::DestroyWindow()
  84. {
  85.     ::EnumChildWindows(m_hWnd, SendPrepareToClose, 0);
  86.  
  87.     return CMDIFrameWnd::DestroyWindow();
  88. }
  89.